1. Technical Field
The present invention relates in general to a system and method for programmatic selection of a translator to translate inter-component data exchange. More particularly, the present invention relates to a system and method for building data semantics into a typing system such that translations may be automatically selected.
2. Description of the Related Art
Many computer systems today use a component-based architecture for their programming system, such as Java. Component-based architectures include a multitude of components that request information from each other and pass information to each other. Components may indirectly launch other components in situations where a first component requests information from a second component. For example, a first component wishes to request functionality from a second component but the first component includes data in XSD whereas the second component accepts data in the form of Java Objects. In this example, the two components' data may reference the same semantic object (in different formats) but they are unable to communicate until a translation bridge is provided from XML to XSD for the specific semantic object.
Over time as such component-based systems grow with additional components from different application families or business domains, the likelihood of data impedance mismatches grows dramatically. This makes it exceedingly difficult to create new solutions based on the existing components simply due to the data impedance mismatches. This is true even if the data to be exchanged between two components refers to the same or similar entities, but the data format is different.
A challenge found in component-based architectures is that “data impedance mismatches” occur when the data value format of a requesting component is different than an input data format requirement of a recipient component even if the semantics of both is the same. Component mismatches occur particularly when components are contributed and/or registered to a system from “program families” in different problem space domains over time, such as with the case of many client server platforms (e.g. Java 2 Enterprise Edition).
In systems where a mediating object launches components, the mediator does not resolve the data impedance mismatches except where trivial syntactic coercion of the data may occur. Data resolution mismatches is the responsibility of the requesting component and is usually handled using statically bound conversion routines that are programmed into the requesting component by the developer of the requesting component. The requesting component developer is required to understand the corresponding data semantic and syntax of the recipient component. This couples the requesting component to the recipient component's input format such that a change to the recipient component's input format causes the requesting component to no longer function correctly.
What is needed, therefore, is a method for semantically typing data, registering translation routines based on semantically type data, and automatically selecting a translator and using the selected translator to resolve data impedance mismatches between components.